#include "BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h"
#ifdef __cplusplus
extern "C" {
#endif
btConvexPlaneCollisionAlgorithm::CreateFunc* bullet_NewbtConvexPlaneCollisionAlgorithmCreateFunc(){
	btConvexPlaneCollisionAlgorithm::CreateFunc* wrap_out = new btConvexPlaneCollisionAlgorithm::CreateFunc();
	return wrap_out;
}

int bullet_btConvexPlaneCollisionAlgorithmCreateFunc_GetFieldOfM_minimumPointsPerturbationThreshold(btConvexPlaneCollisionAlgorithm::CreateFunc* c_this){
	return (int)(c_this->m_minimumPointsPerturbationThreshold);
}

int bullet_btConvexPlaneCollisionAlgorithmCreateFunc_GetFieldOfM_numPerturbationIterations(btConvexPlaneCollisionAlgorithm::CreateFunc* c_this){
	return (int)(c_this->m_numPerturbationIterations);
}

btConvexPlaneCollisionAlgorithm* bullet_NewbtConvexPlaneCollisionAlgorithm(btPersistentManifold* mf,btCollisionAlgorithmConstructionInfo* ci,btCollisionObjectWrapper* body0Wrap,btCollisionObjectWrapper* body1Wrap,bool isSwapped,int numPerturbationIterations,int minimumPointsPerturbationThreshold){
	btPersistentManifold * c_arg_mf=(btPersistentManifold *)(void*)(mf);
	btCollisionAlgorithmConstructionInfo const& c_arg_ci=(btCollisionAlgorithmConstructionInfo const&)(*ci);
	btCollisionObjectWrapper const * c_arg_body0Wrap=(btCollisionObjectWrapper const *)(void*)(body0Wrap);
	btCollisionObjectWrapper const * c_arg_body1Wrap=(btCollisionObjectWrapper const *)(void*)(body1Wrap);
	bool c_arg_isSwapped=isSwapped;
	int c_arg_numPerturbationIterations=numPerturbationIterations;
	int c_arg_minimumPointsPerturbationThreshold=minimumPointsPerturbationThreshold;
	btConvexPlaneCollisionAlgorithm* wrap_out = new btConvexPlaneCollisionAlgorithm(c_arg_mf,c_arg_ci,c_arg_body0Wrap,c_arg_body1Wrap,c_arg_isSwapped,c_arg_numPerturbationIterations,c_arg_minimumPointsPerturbationThreshold);
	return wrap_out;
}

void bullet_btConvexPlaneCollisionAlgorithm_collideSingleContact(btConvexPlaneCollisionAlgorithm* c_this,btQuaternion* perturbeRot,btCollisionObjectWrapper* body0Wrap,btCollisionObjectWrapper* body1Wrap,btDispatcherInfo* dispatchInfo,btManifoldResult* resultOut){
	btQuaternion const& c_arg_perturbeRot=(btQuaternion const&)(*perturbeRot);
	btCollisionObjectWrapper const * c_arg_body0Wrap=(btCollisionObjectWrapper const *)(void*)(body0Wrap);
	btCollisionObjectWrapper const * c_arg_body1Wrap=(btCollisionObjectWrapper const *)(void*)(body1Wrap);
	btDispatcherInfo const& c_arg_dispatchInfo=(btDispatcherInfo const&)(*dispatchInfo);
	btManifoldResult * c_arg_resultOut=(btManifoldResult *)(void*)(resultOut);
	c_this->collideSingleContact(c_arg_perturbeRot,c_arg_body0Wrap,c_arg_body1Wrap,c_arg_dispatchInfo,c_arg_resultOut);
}

#ifdef __cplusplus
}
#endif
